package com.newpage.module_gather.fragment;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.alibaba.android.arouter.launcher.ARouter;
import com.daquexian.flexiblerichtextview.FlexibleRichTextView;
import com.flyco.tablayout.CommonTabLayout;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.github.jdsjlzx.recyclerview.LRecyclerView;
import com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter;
import com.google.gson.reflect.TypeToken;
import com.newpage.module_gather.R;
import com.newpage.module_gather.R2;
import com.newpage.module_gather.adapter.CommonPopAdapter;
import com.newpage.module_gather.adapter.SimpleTreeRecyclerAdapter;
import com.newpage.module_gather.contract.QuestionManagerCon;
import com.newpage.module_gather.presenter.QuestionManagerPre;
import com.newpage.module_gather.treelist.Node;
import com.newpage.module_gather.treelist.OnTreeNodeClickListener;
import com.newpage.module_gather.treelist.TreeRecyclerAdapter;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import com.wetao.lib_common.ConstantArouter;
import com.wetao.lib_common.Constants;
import com.wetao.lib_common.adapter.RecycleHolder;
import com.wetao.lib_common.adapter.RecyclerAdapter;
import com.wetao.lib_common.base.BaseLazyFragment;
import com.wetao.lib_common.base.BaseNestingLazyFragment;
import com.wetao.lib_common.bean.TabEntity;
import com.wetao.lib_common.bean.response.ExaminationPointInfo;
import com.wetao.lib_common.bean.response.SubjectInfo;
import com.wetao.lib_common.bean.response.WrongQuestionListInfo;
import com.wetao.lib_common.greendao.DBUtils;
import com.wetao.lib_common.greendao.model.ExaminationPointItem;
import com.wetao.lib_common.utils.BaseEvent;
import com.wetao.lib_common.utils.ComUtil;
import com.wetao.lib_common.utils.FormulaUtil;
import com.wetao.lib_common.utils.GsonUtil;
import com.wetao.lib_common.utils.JsonUtils;
import com.wetao.lib_common.utils.LogUtils;
import com.wetao.lib_common.utils.MultiClickUtil;
import com.wetao.lib_common.utils.OptionStr;
import com.wetao.lib_common.utils.StringUtil;
import com.wetao.lib_common.utils.ToastUtil;
import com.wetao.lib_common.view.CustomPopWindow;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.jetbrains.annotations.NotNull;
import org.scilab.forge.jlatexmath.core.AjLatexMath;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;
import io.github.kbiakov.codeview.classifier.CodeProcessor;

/**
 * author: zhouyh
 * created on: 2021/6/17 10:18 上午
 * description:错题管理页面
 */
public class QuestionManagerFragment extends BaseLazyFragment<QuestionManagerCon.View, QuestionManagerPre> implements QuestionManagerCon.View, OnTreeNodeClickListener {


    @BindView(R2.id.ll_pop_date)
    LinearLayout ll_pop_date;
    @BindView(R2.id.ll_pop_knowledge)
    LinearLayout ll_pop_knowledge;
    @BindView(R2.id.ll_pop_level)
    LinearLayout ll_pop_master;
    @BindView(R2.id.tv_pop_date_content)
    TextView tv_pop_date;
    @BindView(R2.id.tv_pop_knowledge_content)
    TextView tv_pop_knowledge;
    @BindView(R2.id.tv_pop_level_content)
    TextView tv_pop_master;
    @BindView(R2.id.iv_popDowUp_date)
    ImageView iv_popDowUp_date;
    @BindView(R2.id.iv_popDowUp_knowledge)
    ImageView iv_popDowUp_knowledge;
    @BindView(R2.id.iv_popDowUp_level)
    ImageView iv_popDowUp_master;

    @BindView(R2.id.srl_question_manager)
    SmartRefreshLayout srl;
    @BindView(R2.id.lrv_question_manager)
    LRecyclerView lrv;

    @BindView(R2.id.rl_manager_noData)
    RelativeLayout rl_no_data;

    //学科
    @BindView(R2.id.tl_subject)
    CommonTabLayout ctl_subject;

    private LRecyclerViewAdapter lrvAdapter;
    private RecyclerAdapter<WrongQuestionListInfo.DataBean.RecordsBean> questionAdapter;
    private List<WrongQuestionListInfo.DataBean.RecordsBean> examData = new ArrayList<>();



    private ArrayList<CustomTabEntity> mSubEntities = new ArrayList<>();
    private List<SubjectInfo.SubjectBean> subjectBeans = new ArrayList<>();

    //日期弹框
    private RecyclerView rcy_pop_date;
    private CommonPopAdapter dateAdapter;
    private CustomPopWindow popWindowDate;
    private String[] dates = {"近三个月", "近两个月", "近一个月", "近一周"}; //3 2 1 4
    private Integer dateSelectId = 3;

    //掌握程度
    private RecyclerView rcy_pop_master;
    private CustomPopWindow popWindowMaster;
    private CommonPopAdapter masterAdapter;
    private String[] masteryStates = {"全部掌握程度", "不懂", "半懂", "已懂"};
    private Integer masterSelectId = null;


    /**
     * 知识考点节点
     */
    private List<ExaminationPointInfo.MaterialNode> nodesBeans = new ArrayList<>();
    protected List<Node> nodes = new ArrayList<>();
    private TreeRecyclerAdapter mAdapter;
    private RecyclerView rcKnowledge;
    private CustomPopWindow popWindowKnowledge;
    private int examinationPointIndex = 0;       //节点下标
    private Integer examinationPointSelectId;    //知识节点id

    private boolean isFirst = true;

    private String subjectInfo;
    private volatile int subjectId;
    int current = 1;
    int pages = 1;
    int total = 1;
    int PAGESIZE = 4;
    int PAGE = 1;


    @Override
    public int getLayoutId() {
        return R.layout.gather_manager_fragment;
    }

    @Override
    public QuestionManagerPre createPresenter() {
        return new QuestionManagerPre(getActivity());
    }

    @Override
    public QuestionManagerCon.View createView() {
        return this;
    }

    @Override
    public void init(View rootView) {
        if (!EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().register(this);
        }
        ////CodeProcessor.init(getActivity());
        ////AjLatexMath.init(getActivity()); //
        LogUtils.e("init start");
        initAdapter();
        initRefresh();
        initPopDateView();
        initPopMasterView();
        initPopExaminationPointView();

        getSubjectReq();

    }

    private void initData() {

        if (subjectBeans != null && subjectBeans.size() > 0) {
            for (int i = 0; i < subjectBeans.size(); i++) {
                mSubEntities.add(new TabEntity(subjectBeans.get(i).getName(), 0, 0));
            }
            subjectId = subjectBeans.get(0).getId();
            ctl_subject.setTabData(mSubEntities);


            ctl_subject.setOnTabSelectListener(new OnTabSelectListener() {
                @Override
                public void onTabSelect(int position) {
                    subjectId = subjectBeans.get(position).getId();
                    dateSelectId = 3;
                    tv_pop_date.setText(dates[0]);
                    masterSelectId = null;
                    tv_pop_master.setText(masteryStates[0]);
                    getExaminationPointData();
                    getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
                }

                @Override
                public void onTabReselect(int position) {

                }
            });
        }
    }


    private void getExaminationPointData() {
        ExaminationPointItem item = DBUtils.getInstance(getActivity()).getExaminationPointBySubject(subjectId);
        if (item != null) {
            List<ExaminationPointInfo.MaterialNode> nodeList = JsonUtils.fromJsonList(item.getData(), new TypeToken<List<ExaminationPointInfo.MaterialNode>>() {
            }.getType());
            nodes.clear();
            nodesBeans.clear();
            ExaminationPointInfo.MaterialNode topBean = new ExaminationPointInfo.MaterialNode();
            topBean.setId(0);
            topBean.setMaterialNodes(null);
            topBean.setName("全部知识考点");
            topBean.setParentId(-1);
            nodesBeans.add(topBean);
            nodesBeans.addAll(nodeList);
            if (nodesBeans == null || nodesBeans.size() < 1) {
                return;
            }
            for (int i = 0; i < nodesBeans.size(); i++) {
                addNode(nodesBeans.get(i));
            }
            Node temp = nodes.get(examinationPointIndex);
            tv_pop_knowledge.setText(temp.getName());
            //默认请求第一个节点数据
            examinationPointSelectId = (int) temp.getId();

            if (nodes != null && nodes.size() > 0) {
                nodes.get(examinationPointIndex).setChecked(true);
            }
            updatePopKnowledgeAdapter();
        } else {
            getExaminationPointReq(subjectId);
        }
    }


    @OnClick({R2.id.ll_pop_date, R2.id.ll_pop_knowledge, R2.id.ll_pop_level})
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.ll_pop_date) {
            showDatePop();
        } else if (id == R.id.ll_pop_knowledge) {
            showKnowledgePop();
        } else if (id == R.id.ll_pop_level) {
            showMasterPop();
        }
    }

    private void initPopExaminationPointView() {
        View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.gather_common_pop, null);
        rcKnowledge = contentView.findViewById(R.id.rcy_pop_common);
        initPopExaminationPointRcyView();
        popWindowKnowledge = new CustomPopWindow.PopupWindowBuilder(getActivity())
                .setView(contentView)
                .setFocusable(true)
                .setOutsideTouchable(true)
                .setOnDissmissListener(() -> iv_popDowUp_knowledge.setImageResource(R.drawable.common_arrow_down))
                .create();
    }

    private void initPopExaminationPointRcyView() {
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        rcKnowledge.setLayoutManager(layoutManager);
        mAdapter = new SimpleTreeRecyclerAdapter(rcKnowledge, getActivity(),
                nodes, 1, R.drawable.ic_expand_normal, R.drawable.ic_collapse);
        mAdapter.setOnTreeNodeClickListener(this);
        rcKnowledge.setAdapter(mAdapter);
    }

    /**
     * 日期弹框视图
     */
    private void initPopDateView() {
        tv_pop_date.setText(dates[0]);
        View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.gather_common_pop, null);
        rcy_pop_date = contentView.findViewById(R.id.rcy_pop_common);
        initPopDateRcyView();
        popWindowDate = new CustomPopWindow.PopupWindowBuilder(getActivity())
                .setView(contentView)
                .setFocusable(true)
                .setOutsideTouchable(true)
                .setOnDissmissListener(() -> iv_popDowUp_date.setImageResource(R.drawable.common_arrow_down))
                .create();
    }

    /**
     * 初始化日期列表数据
     */
    private void initPopDateRcyView() {

        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        rcy_pop_date.setLayoutManager(layoutManager);
        dateAdapter = new CommonPopAdapter(getActivity());

        dateAdapter.setOnItemClickListener(position -> {
            if (position == 0) {
                dateSelectId = 3;
            } else if (position == 2) {
                dateSelectId = 1;
            } else {
                dateSelectId = position + 1;
            }
            tv_pop_date.setText(dates[position]);
            iv_popDowUp_date.setImageResource(R.drawable.common_arrow_down);
            popWindowDate.dissmiss();
            getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);

        });
        dateAdapter.setData(Arrays.asList(dates));
        rcy_pop_date.setAdapter(dateAdapter);
    }

    /**
     * 掌握程度弹框视图
     */
    private void initPopMasterView() {
        tv_pop_master.setText(masteryStates[0]);
        View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.gather_common_pop, null);

        rcy_pop_master = contentView.findViewById(R.id.rcy_pop_common);
        initPopMasterRcyView();
        popWindowMaster = new CustomPopWindow.PopupWindowBuilder(getActivity())
                .setView(contentView)
                .setFocusable(true)
                .setOutsideTouchable(true)
                .setOnDissmissListener(() -> iv_popDowUp_master.setImageResource(R.drawable.common_arrow_down))
                .create();
    }

    /**
     * 初始化日期列表数据
     */
    private void initPopMasterRcyView() {
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        rcy_pop_master.setLayoutManager(layoutManager);
        masterAdapter = new CommonPopAdapter(getActivity());
        masterAdapter.setOnItemClickListener(new CommonPopAdapter.OnItemClickListener() {
            @Override
            public void onClick(int position) {
                masterSelectId = position == 0 ? null : position;
                tv_pop_master.setText(masteryStates[position]);
                iv_popDowUp_master.setImageResource(R.drawable.common_arrow_down);
                popWindowMaster.dissmiss();
                getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);

            }
        });

        masterAdapter.setData(Arrays.asList(masteryStates));
        rcy_pop_master.setAdapter(masterAdapter);
    }

    private void showMasterPop() {
        popWindowMaster.showAsDropDown(ll_pop_master, ll_pop_master.getWidth() / 2 - popWindowMaster.getWidth() / 2, 14);
        iv_popDowUp_master.setImageResource(R.drawable.common_arrow_up);
    }

    private void showDatePop() {
        popWindowDate.showAsDropDown(ll_pop_date, ll_pop_date.getWidth() / 2 - popWindowDate.getWidth() / 2, 14);
        iv_popDowUp_date.setImageResource(R.drawable.common_arrow_up);
    }

    private void showKnowledgePop() {
        popWindowKnowledge.showAsDropDown(ll_pop_knowledge, ll_pop_knowledge.getWidth() / 2 - popWindowKnowledge.getWidth() / 2, 14);
        iv_popDowUp_knowledge.setImageResource(R.drawable.common_arrow_up);
    }


    /**
     * 获取错题斩模块学科数据
     */
    private void getSubjectReq() {
        getPresenter().querySubject(ComUtil.getHashmapByStr(new String[]{}, new String[]{}), false, false);
    }

    /**
     * 请求知识考点
     */
    private void getExaminationPointReq(int subjectId) {
        getPresenter().getExaminationPointInfo(ComUtil.getHashmapByStr(new String[]{"subjectId"},
                new String[]{String.valueOf(subjectId)}), false, false);
    }


    /**
     * 请求错题列表
     * @param subjectId
     * @param timeType
     * @param examinationPointId
     * @param masteryLevel
     * @param curPage
     */
    private void getWrongExamListReq(Integer subjectId, Integer timeType,
                                     Integer examinationPointId, Integer masteryLevel, Integer curPage) {
        getPresenter().selectWrongQuestionList(
                ComUtil.getHashmapByStr(new String[]{"subjectId", "timeType", "examinationPointId", "masteryLevel", "pageNo", "pageSize"},
                        new String[]{String.valueOf(subjectId), String.valueOf(timeType), (examinationPointId == null || examinationPointId == 0) ? null : String.valueOf(examinationPointId),
                                String.valueOf(masteryLevel), String.valueOf(curPage), String.valueOf(PAGESIZE)}), false, false);
    }


    private void initRefresh() {
        srl.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull @NotNull RefreshLayout refreshLayout) {
                if (current < pages) {
                    getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, ++current);
                } else {
                    refreshLayout.finishLoadMoreWithNoMoreData();
                }
            }

            @Override
            public void onRefresh(@NonNull @NotNull RefreshLayout refreshLayout) {
                getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
            }
        });

        srl.setRefreshHeader(new ClassicsHeader(getActivity()));
        srl.setRefreshFooter(new ClassicsFooter(getActivity()));
    }

    /**
     * 初始化列表
     */
    private void initAdapter() {
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        lrv.setLayoutManager(linearLayoutManager);
        lrv.setNestedScrollingEnabled(false);
        lrv.setOverScrollMode(View.OVER_SCROLL_NEVER);
        questionAdapter = new RecyclerAdapter<WrongQuestionListInfo.DataBean.RecordsBean>(getActivity(), examData, R.layout.gather_manager_exam_item) {
            @Override
            public void convert(RecycleHolder holder, WrongQuestionListInfo.DataBean.RecordsBean data, int position) {
                showFlexibleRichTextView(holder.itemView.findViewById(R.id.frtv_question), data, position);
                holder.setText(R.id.tv_wrong_question_time, String.format("收录时间: %s", data.getCreateTime()));
                holder.setText(R.id.tv_wrong_knowledge, String.format("知识考点: %s", data.getExaminationPointName() == null ? "无" : data.getExaminationPointName()));
                holder.setText(R.id.tv_wrong_state, String.format("掌握程度: %s", getMasteryLevel(data.getMasteryLevel())));
                holder.itemView.setOnClickListener(v -> {
                    if (!ComUtil.isNetworkConnected()){
                        ToastUtil.initToast("网络已断开，请先检查网络");
                        return;
                    }
                    if (MultiClickUtil.isFastClick()) {
                        ARouter.getInstance().build(ConstantArouter.PATH_GATHER_QUESTIONDETAILACTIVITY)
                                .withInt("examId", data.getId())
                                .withInt("questionNo", position)
                                .withString("examinationPoint", data.getExaminationPointName())
                                .navigation();
                    }
                });
            }
        };
        lrvAdapter = new LRecyclerViewAdapter(questionAdapter);
        lrv.setEmptyView(rl_no_data);
        lrv.setAdapter(lrvAdapter);
    }

    /**
     * 掌握程度
     *
     * @param masteryLevel
     * @return
     */
    private String getMasteryLevel(Integer masteryLevel) {
        String level = "不懂";
        if (masteryLevel == null) return level;
        switch (masteryLevel) {
            case 1:
                level = "不懂";
                break;
            case 2:
                level = "半懂";
                break;
            case 3:
                level = "已懂";
                break;
        }
        return level;
    }

    private void finishRefresh() {
        if (current == 1) {
            resetNoMoreData();
            examData.clear();
        }
        hideRefresh();
    }

    private void hideRefresh() {
        if (srl != null) {
            srl.finishRefresh();
            srl.finishLoadMore();
        }
    }


    public void resetNoMoreData() {
        if (srl != null) {
            srl.resetNoMoreData();//去除没有更多数据状态
        }
    }

    private void showEmpty() {
        if (examData.size() > 0) {
            rl_no_data.setVisibility(View.GONE);
            srl.setVisibility(View.VISIBLE);
        } else {
            rl_no_data.setVisibility(View.VISIBLE);
            srl.setVisibility(View.GONE);
        }
    }

    @Override
    public void selectWrongQuestionListResult(WrongQuestionListInfo resp) {
        finishRefresh();
        if (resp.getData() != null && resp.getData().getRecords().size() > 0) {
            pages = resp.getData().getPages();
            PAGESIZE = resp.getData().getSize();
            total = resp.getData().getTotal();
            examData.addAll(resp.getData().getRecords());
            lrv.setEmptyView(rl_no_data);
            lrv.refreshComplete(current);
        }
        lrvAdapter.notifyDataSetChanged();
        showEmpty();
    }

    @Override
    public void selectWrongQuestionListFail() {
        hideRefresh();
    }

    @Override
    public void getExaminationPointInfoResult(ExaminationPointInfo resp) {
        if (resp == null) return;

        if (resp.getData() != null && resp.getData().size() > 0) {
            insertExaminationPointItem(JsonUtils.toJson(resp.getData()));
            nodes.clear();
            nodesBeans.clear();
            ExaminationPointInfo.MaterialNode topBean = new ExaminationPointInfo.MaterialNode();
            topBean.setId(0);
            topBean.setMaterialNodes(null);
            topBean.setName("全部知识考点");
            topBean.setParentId(-1);
            nodesBeans.add(topBean);
            nodesBeans.addAll(resp.getData());
            if (nodesBeans == null || nodesBeans.size() < 1) {
                return;
            }
            for (int i = 0; i < nodesBeans.size(); i++) {
                addNode(nodesBeans.get(i));
            }
            Node temp = nodes.get(examinationPointIndex);
            tv_pop_knowledge.setText(temp.getName());
            //默认请求第一个节点数据
            examinationPointSelectId = (int) temp.getId();

            if (nodes != null && nodes.size() > 0) {
                nodes.get(examinationPointIndex).setChecked(true);
            }
            updatePopKnowledgeAdapter();
//            getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
        } else {
            nodes.clear();
            updatePopKnowledgeAdapter();
            tv_pop_knowledge.setText("暂无知识考点");
            finishRefresh();
            lrvAdapter.notifyDataSetChanged();
        }
    }

    /**
     * 将知识节点保存到数据库
     */
    private void insertExaminationPointItem(String data) {
        ExaminationPointItem item = new ExaminationPointItem(null, subjectId, data);
        DBUtils.getInstance(getActivity()).insertExaminationPointItem(item);
    }


    /**
     * 添加树形节点
     *
     * @param node
     */
    private void addNode(ExaminationPointInfo.MaterialNode node) {
        Node tempNode = new Node(node.getId(), node.getParentId(), node.getName());
        if (node.getMaterialNodes() != null && node.getMaterialNodes().size() > 0) {
            tempNode.setChildren(node.getMaterialNodes());
            nodes.add(tempNode);
            for (int i = 0; i < node.getMaterialNodes().size(); i++) {
                addNode(node.getMaterialNodes().get(i));
            }
        } else {
            nodes.add(tempNode);
        }
    }


    private void updatePopKnowledgeAdapter() {
        if (mAdapter == null) {
            initPopExaminationPointRcyView();
        } else {
            mAdapter.setDefaultExpandLevel(mAdapter.getMaxExpandLevel());
            mAdapter.update(nodes);
        }
    }

    @Override
    public void getExaminationPointInfoFail() {

    }

    @Override
    public void querySubjectBySectionIdResult(SubjectInfo resp) {
        if (resp.getData() != null && resp.getData().size() > 0) {
            subjectBeans.clear();
            subjectBeans.addAll(resp.getData());
            initData();
            getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
            getExaminationPointData();
        }
    }

    @Override
    public void querySubjectBySectionIdFail() {

    }


    private void showFlexibleRichTextView(final FlexibleRichTextView view, WrongQuestionListInfo.DataBean.RecordsBean bean, int questionNo) {
        view.resetTextView();
        final StringBuilder stringBuilder = new StringBuilder();
        float f_size = getResources().getDimension(R.dimen.dp_15);
        //stringBuilder.append("<p style=\"line-height:1.5;\">已知<latex>$$ y $$</latex>实数<img src=\"http://newpage-edu.oss-cn-beijing.aliyuncs.com/e57ae20d05c442fcbf52f7beaed7beda.jpg\" />满<color=#ff0000><absoluteSize="+ f_size +"> 足约束</absoluteSize></color>条件<img src=\"http://newpage-edu.oss-cn-beijing.aliyuncs.com/c7aade6ffb5a4de3a074f1656988ef8e.jpg\" />，则<img src=\"http://newpage-edu.oss-cn-beijing.aliyuncs.com/201764a2a91c4aff8d4ac28012e1ef36.jpg\" />的最小值为（ ）</p>");
        //stringBuilder.append("打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据打卡了更好的咖啡来的数据");
        //stringBuilder.append("\r\n");
        if (bean != null) {

            String question = bean.getQuestionContentVo().getQuestion();
            if (!StringUtil.isEmpty(question)) {
                stringBuilder.append(String.format("%s. ", questionNo + 1));
                String temp = FormulaUtil.reLatex(question);
                LogUtils.i("frtv" + "=====" + temp);
                stringBuilder.append(temp);
            }
            List<String> options = bean.getQuestionContentVo().getOptions();
            if (options != null && options.size() > 0) {
                int o_index = 0;
                for (String value : options) {
                    if (value != null && !StringUtil.isEmpty(value) && o_index < OptionStr.OPS.length) {
                        if (o_index > 0) {
                            stringBuilder.append("\r\n");
                        }
                        stringBuilder.append(OptionStr.OPS[o_index] + ". ");
                        stringBuilder.append(FormulaUtil.reLatex(value));
                        o_index++;
                    }
                }
            }
//            List<String> answers = bean.getQuestionContentVo().getAnswers();
//            if(answers != null && answers.size() > 0) {
//                int a_index = 0;
//                for(String ans : answers) {
//                    if(ans != null && !StringUtil.isEmpty(ans)) {
//                        if(a_index == 0) {
//                            String str = "<p><color=#00A8B2><absoluteSize="+ f_size +">【答案】</absoluteSize></color></p>";
//                            stringBuilder.append("\r\n");
//                            stringBuilder.append(str);
//                        } else {
//                            stringBuilder.append(",");
//                        }
//                        stringBuilder.append(ans);
//                        a_index++;
//                    }
//                }
//            }
//            String explain = bean.getQuestionContentVo().getExplain();
//            if(explain != null && !StringUtil.isEmpty(explain)) {
//
//                stringBuilder.append("\r\n");
//                String str = "<p><color=#00A8B2><absoluteSize="+ f_size +">【解析】</absoluteSize></color></p>";
//                stringBuilder.append(str);
//                stringBuilder.append(FormulaUtil.reLatex(explain));
//            }
        }
        LogUtils.i(stringBuilder.toString());
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                view.setText(stringBuilder.toString());
            }
        });

    }

    @Override
    public void onClick(Node node, int position) {
        examinationPointSelectId = (int) node.getId();
        tv_pop_knowledge.setText(node.getName());
        getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        if (EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().unregister(this);
        }
    }

    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
    public void onEventReceived(BaseEvent event) {
        if (event.getCode() == Constants.ConstData.QUESTION_MANAGER_REFRESH) {
            getWrongExamListReq(subjectId, dateSelectId, examinationPointSelectId, masterSelectId, current = PAGE);
        }
    }
}
